#pragma once

#include <iostream>
#include <functional>

// 构建一个任务。
//  class Tesk
//  {
//      //using func_t = std::function<int(int,int)>;
//      typedef std::function<int(int,int)> func_t;

// public:
//     Tesk()
//     { }
//     Tesk(const int x, const int y , func_t callback):_x(x),_y(y),_callback(callback)
//     { }
//     int operator()()
//     {
//         int ret = _callback(_x, _y);
//         return ret;
//     }

// //private:
//     int _x;
//     int _y;
//     func_t _callback;
// };


//构建计算任务
class Count_Tesk
{
    // using func_t = std::function<int(int,int)>;
    typedef std::function<int(int, int, char)> func_t;

public:
    Count_Tesk()
    {
    }
    Count_Tesk(const int x, const int y, char op, func_t func) : _x(x), _y(y), _op(op), _func(func)
    {
    }
    int operator()()
    {
        int ret = _func(_x, _y, _op);
        return ret;
    }

    // private:
    int _x;
    int _y;
    char _op;
    func_t _func;
};




//构建存储任务
class Storage_Tesk
{
    using func_t = std::function<void(std::string)>;

public:
    Storage_Tesk()
    {
    }

    Storage_Tesk(const std::string massage, func_t func)
        : _massage(massage), _func(func)
    {
    }

    void operator()(){
        _func(_massage);
    }
private:
    std::string _massage;
    func_t _func;
};